package ncme.auto.framework.core.annotation.aspect;

import org.springframework.web.bind.annotation.RequestMapping;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@RequestMapping()
public @interface AutoMapperProcess {

    /**
     * 接口对应的映射实体类
     */
    Class<?> MAPPER_ENTITY();

    /**
     * 基础日志内容，后续会自动加入操作类型
     */
    String LOG_MSG();

    /**
     * 开启请求类型编号，默认"5查  2增  3改  4删"
     */
    String REQUEST_TYPE_CODE();

    /**
     * 用于权限验证的权限编码，取值为-1时表示关闭权限验证
     */
    int PERMISSION_CODE() default -1;

    /**
     * 是否开启自动逻辑
     */
    boolean AUTO_EXECUTE() default true;

    /**
     * get 请求中 返回是是id 还是 entity，默认返回 id集合
     */
    boolean FOR_ENTITY() default true;

    /**
     * 是否开启结果处理
     */
    boolean OPEN_RESULT_FILTER() default true;

    /**
     * 需要返回的字段，若该值不为空，则处于最高优先级
     */
    String RETURN_FIELDS() default "";

    /**
     * 需要过滤的字段，若VALID_FIELD为空，该字段才会生效，已自动过滤了version和isDeleted，这里只需添加额外的
     */
    String HIDDEN_FIELDS() default "";

}
